Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Системне програмування

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт до лабораторної роботи № 1 з дисципліни " Системне програмування " Мета: Засвоїти поняття «процесів» та «потоків» як основних компонентів сучасних операційних систем. Здобути навики створення, керування та знищення «процесів» та «потоків» в операційній системі Windows. Варіант 2 Розробити програму в середовищі Visual Studio, що демонструє використання системних викликів, відзначених символом “+”, відповідно до варіанту.  Написати функцію потоку, яка як вхідний параметр приймає дескриптор відкритого текстового файлу. Функція повинна здійснювати посимвольне виведення у файл номер процесу, номер потоку та системний час. Передбачити достатню кількість ітерації запису в файл з одної функції потоку. Відкриття файлу слід виконувати до створення потоку, використовуючи функцію FileOpen(), а після завершення роботи з файлом слід викликати функцію FileClose(). Продемонструвати паралельне виконання створеного потоку з первинним потоком процесу. #include<Windows.h> #include<process.h> #include<iostream> usingnamespace std; unsigned__stdcall ThreadFunc(void* ); staticunsigned_stdcallFileOut(void * File); void ProcessAndThred(); int main() { ProcessAndThred(); HANDLE hFile; TCHAR stdPath[30] = TEXT("D:\\test.txt"); hFile = CreateFile(stdPath,GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,0,0); unsigned ThreadId; HANDLE h_thread; h_thread = (HANDLE) _beginthreadex (NULL,0,FileOut,hFile, 0, &ThreadId); DWORD WrittenBytes; for(int i=0;i!=10;i++) { WriteFile(hFile,"&",3,&WrittenBytes,0); Sleep(100); } if(h_thread==INVALID_HANDLE_VALUE) cout<<"Create a new thread is failed"; else cout<<"Create a new thread is OK","OK"; CloseHandle(hFile); TerminateThread(h_thread,0); return 0; } unsigned__stdcallThreadFunc(void* arg) { _endthreadex(0); return 0 ; } staticunsigned_stdcallFileOut(void * File) { HANDLE hFile = File; char buff[100]; unsignedint ProcessId = GetCurrentProcessId(); unsignedint ThreadId = GetCurrentThreadId(); SYSTEMTIME SysTime; GetSystemTime(&SysTime); sprintf(buff,"ProcessId - %d\r\nThreadId - %d\r\nSystemTime - %d : %d : %d\r\n", ProcessId,ThreadId,SysTime.wHour,SysTime.wMinute,SysTime.wSecond); int size=sizeof(buff); DWORD WrittenBytes; for(int i=0;buff[i]!=0;i++) { WriteFile(hFile,&buff[i],1,&WrittenBytes,0); } return 0; } void ProcessAndThred() { bool SetClass; unsigned ThreadId; // ідентифікатор потоку HANDLE hThread; // дескриптор потоку int i = 0; // передаване число DWORD SetPriority; HANDLE hProc = NULL; STARTUPINFO cif; ZeroMemory(&cif,sizeof(STARTUPINFO)); PROCESS_INFORMATION pi; // ShellExecute HINSTANCE hInst = ShellExecuteW(NULL, L"open", // Operation to perform L"c:\\windows\\regedit.exe", // Application name NULL, // Additional parameters NULL, // Default directory SW_SHOW); if(reinterpret_cast<int>(hInst) > 32) cout<<"ShellExecute Start Sucess"<<endl; else cout<<"ShellExecute don`t Start Sucess"<<endl; // CreateProcess if (CreateProcess(L"c:\\windows\\notepad.exe",NULL, NULL,NULL,FALSE,NULL,NULL,NULL ,&cif,&pi)==TRUE) cout<<"Create Process Start Sucess"<<endl; else cout<<"Erorr Create Process"<<endl; //OpenProcess hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pi.dwProcessId); if(hProc==INVALID_HANDLE_VALUE) cout<<"Open Process is failed"<<endl; else cout<<"Open Process is OK"<<endl; // SetPriorityClass SetPriority = SetPriorityClass(hProc,NORMAL_PRIORITY_CLASS); cout<<" Priority Class is "<<SetPriority<<endl; //GetExitCodeProcess DWORD ExitCode1 = 0; GetExitCodeProcess(hProc, &ExitCode1); if(ExitCode1 == STILL_ACTIVE) cout<<"Process is alive"<<endl; else cout<<"Process is dead"<<endl; //begintjreadex hThread =(HANDLE)_begint...
Антиботан аватар за замовчуванням

19.11.2013 20:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини